package com.ayit.anno;

import com.ayit.validation.StateValidation;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.FIELD;

@Documented//元注解，标识这个注解是可以抽取到帮助文档里面的
@Target({ FIELD})//元注解，标识这个注解可以用在哪个阶段
@Retention(RetentionPolicy.RUNTIME)//元注解
@Constraint(validatedBy = {StateValidation.class})//元注解,标志谁给这个注解提供规则
//自定义注解
public @interface State {
    //提供校验失败后的提示信息
    String message() default "state参数的值只能是已发布或草稿！";
    //指定分组
    Class<?>[] groups() default {};
    //负载 获取到state注解的附加信息
    Class<? extends Payload>[] payload() default {};
}
/*
    自定义注解State：
        message、groups、payload
        自定义校验数据的类StateValidation
        在需要校验的地方使用自定义注解
* */